package com.iweb.blog.service.impl;

import com.iweb.blog.dao.mapper.TagMapper;
import com.iweb.blog.dao.pojo.Tag;
import com.iweb.blog.service.TagService;
import com.iweb.blog.vo.TagVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;


@Service
public class TagServiceImpl implements TagService {
   @Autowired
   private TagMapper tagMapper;
    @Override
    public List<TagVo> findTagById(Long id) {
        //这里的逻辑
        //1.我们知道这个文章的id
        //2.根据文章的id在ms_article_tag表中找到对应的tagId
//      3.但是这个是一对多    1个id对应多个tagId
//        4.根据返回的tagId找到TagName
//        先根据id找到对应tagId
        List<Long> ids=tagMapper.findTagIds(id);
        //继续去找 到ms_tag 表中找到name和 avatar
        List<Tag> tagList=tagMapper.findTags(ids);
        //tag-->tagVo
        List<TagVo> tagVos=copyList(tagList);
        return tagVos;
    }

    @Override
    public List<TagVo> findHotTag(int limit) {
        List<Tag> tagList=tagMapper.findHotTags(limit);
        List<TagVo> tagVos = copyList(tagList);
        return tagVos;
    }


    private List<TagVo> copyList(List<Tag> tagList) {
        ArrayList<TagVo> tagVos = new ArrayList<>();
        for (Tag tag:tagList){
            tagVos.add(copy(tag));
        }
        return tagVos;
    }

    private TagVo copy(Tag tag) {
        TagVo tagVo = new TagVo();
        BeanUtils.copyProperties(tag,tagVo);
//        因为TagVo里面是String id  tag里面是long的id
        //所以要手动添加
        tagVo.setId(tag.getId()+" ");
        return tagVo;
    }
}
